﻿#include "tabbarbutton.h"

TabBarButton::TabBarButton(QWidget *parent) : QPushButton(parent)
{
    qDebug() << "TabBarButton constructor";
    setAttribute(Qt::WA_StyledBackground);   // 不继承默认样式
    setFixedHeight(30);

    // 设置按钮默认样式
    setStyleSheet("border-radius: 10px 10px 0px 0px; text-align: center;padding:0px;margin:0px;");

    qDebug() << "create tab button before";
    tab_button = new TabButtonWidget(this);
//    setMinimumSize(tab_button->size());
    setMinimumWidth(tab_button->size().width());
    // 关闭当前页面
    connect(tab_button, &TabButtonWidget::clickCloseBtn, this, &TabBarButton::emitRemove);

    connect(this, &QPushButton::clicked, this, [=](){
        emit change(this);
    });
    qDebug() << "create tabbar button finish";
}

void TabBarButton::emitRemove(){
    emit remove(this);
}

void TabBarButton::setTabIcon(const QIcon &icon)
{
    qDebug() << "set icon: " << icon;
    tab_button->setTabIcon(icon);
//    this->tab_icon->setPixmap(icon.pixmap(20, 20));
//    this->tab_icon->setPixmap()
    //    this->tab_icon->setPixmap()
}

void TabBarButton::loadWebViewIcon(bool ok)
{
    qDebug() << "web view load finished: " << ok;
    if(ok){
        // 加载成功
//        setTabIcon(this->view_widget->icon());
        tab_button->setTabIcon(this->view_widget->icon());
    }else{
        // 加载出错,不设置图标
    }
}

void TabBarButton::setTabText(const QString &title)
{
    qDebug() << "set tab text: " <<title;
//    this->tab_text->setText(title);
    tab_button->setTabText(title);
}

void TabBarButton::loadUrl(const QUrl &url)
{
    view_widget->load(url);
}

void TabBarButton::refresh()
{
    // 刷新
    view_widget->reload();
}

void TabBarButton::updateWhatIs(const QString title)
{
    setWhatsThis(title);
    this->tab_button->updateWthatIs(title);
    this->tab_button->setWhatsThis(title);
}

void TabBarButton::setActiveTabStyle()
{
    setStyleSheet("border-image: url(:/app_resource/tab_btn_press.png);");
    qDebug() << "default style";
//    QPainter p(this);
//    p.drawPixmap(rect(), QPixmap(":app_resource/tab_btn_press.jpg"), QRect());
}

void TabBarButton::setDefaultTabStyle()
{
//    qDebug() << "active style";
    try{
        setStyleSheet("border-image: url(:/app_resource/tab_btn_default.png);");   // 出现异常崩溃的情况,但实际捕获异常之后却又正常
    }catch(const char *ptr){
        qDebug() << "set style exception:" << ptr;
    }
}
